package com.shujia.core

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD

object Code22Action2 {
  def main(args: Array[String]): Unit = {

    /**
     * saveAsObjectFile:
     *    Action算子： 会将数据保存到指定路径中，并保留数据的原始数据类型
     *
     * objectFile：
     *    可以专门读取 saveAsObjectFile 写出的文件，
     *        注意：该算子调用时，由于当前编译器并不知道其数据类型是什么，可以先通过Any打印其数据类型，
     *            之后再通过.var获取RDD变量，指定其数据类型，之后再做后续计算
     *
     *
     */

    val sc = new SparkContext(new SparkConf().setMaster("local").setAppName("CoGroup"))

    //    val value1RDD: RDD[(String, Int)] = sc.parallelize(List(("k1", 11), ("k1", 1), ("k2", 2), ("k3", 3), ("k5", 5), ("k4", 4), ("k3", 3), ("k3", 33)), 2)
    //
    //
    //    value1RDD.saveAsObjectFile("spark_code/output/object_file")

    //    sc
    //      .textFile("spark_code/output/object_file/*")
    //      .foreach(println)


    val readRDD: RDD[(String, Int)] = sc
      .objectFile("spark_code/output/object_file")
    readRDD
      .map {
        case (key,value) => {
          println(key,value)
        }
      }
      .foreach(println)

//    sc
//      .objectFile("spark_code/output/object_file")
    // 编译问题：
//      // Expected type was: ? => ?
//      .map {
//        case (key, value) => {
//          println(key, value)
//        }
//      }.foreach(println)



  }
}
